package com.naiterui.ehp.bs.recommend.dao.mongo;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Repository;

import com.naiterui.ehp.bs.recommend.bean.mongo.DrugTask;

@Repository
public class DrugTaskDao extends MongoBaseDao {

    @Autowired
    private MongoTemplate mongoTemplate;

    private static final String COLLECTIOIN_NAME_DRUG_TASK = "m_drug_task";

    /**
     * 添加任务队列
     * DrugTaskDao.saveDrugTask()
     *
     * @param drugTask
     *
     * @Author YongYang
     * @Date 2016年9月22日
     * @since 1.0.0
     */
    public void saveDrugTask(DrugTask drugTask) {
        super.save(drugTask, COLLECTIOIN_NAME_DRUG_TASK);
    }

    /**
     * 查询所有任务
     * DrugTaskDao.findAllDrugTask()
     *
     * @return
     *
     * @Author YongYang
     * @Date 2016年9月22日
     * @since 1.0.0
     */
    public List<DrugTask> findAllDrugTask(int status) {
        Query query = Query.query(Criteria.where("status").is(status));
        query.with(Sort.by(new Sort.Order(Direction.ASC, "endTime")));
        return super.find(query, DrugTask.class, COLLECTIOIN_NAME_DRUG_TASK);
    }

    /**
     * 删除任务数据
     * DrugTaskDao.removeDrugTask()
     *
     * @param recommandId
     *
     * @Author YongYang
     * @Date 2016年9月26日
     * @since 1.0.0
     */
    public void removeDrugTask(Long recommandId) {
        Query query = new Query(Criteria.where("recommandId").is(recommandId));
        super.remove(query, COLLECTIOIN_NAME_DRUG_TASK);
    }


    @Override
    protected MongoTemplate getMongoTemplate() {
        return this.mongoTemplate;
    }

}
